#ifndef __Bonus_h_
#define __Bonus_h_

#include "Item.h"
#include "MovableItem.h"

class Bonus : public Item, public MovableItem, public Ogre::FrameListener
{

	friend class GameManager;

	// Attributes ------------------------------------------------------------------------------
public:
	enum BonusType
	{
		LIFE, 
		SHIELD
	};
	static const char* DEFAULT_NODE_NAME;

protected:
	BonusType type;

	static int ID;
	static const char* DEFAULT_NAME;

	// Methods ---------------------------------------------------------------------------------
protected:
	Bonus(BonusType _type);
	virtual ~Bonus();
	void initialize();

public:
	virtual void collision(Item* _item);
	virtual void collisionWithBullet(Bullet* _bullet);
	virtual void collisionWithEnemy(Enemy* _enemy);
	virtual void collisionWithMainCharacter(MainCharacter* _mainCharacter);
	virtual void collisionWithFish(Fish * _fish);
	virtual void collisionWithBonus(Bonus* _bonus);
	virtual void collisionWithWeapon(Weapon* weapon);
	virtual bool frameStarted(const Ogre::FrameEvent& evt);
	bool move(void);
	void reset();
	const BonusType& getBonusType() const { return type; }

};

#endif